package com.liu.service.impl;


import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.liu.bo.GoodBo;
import com.liu.dao.GoodsDao;
import com.liu.dao.UserLookDao;
import com.liu.dto.GoodsDto;
import com.liu.entity.Goods;
import com.liu.entity.UserLook;
import com.liu.service.intf.GoodsService;
import com.liu.vo.R;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　 ┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　  ┃
 * 　　┃　　　　　　 ┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━永无BUG!━━━━━━
 *
 * @author 刘亚杰
 * @Description
 * @date 2022/04/23 12:14
 */
@Service
public class GoodsServiceImpl implements GoodsService {
    @Resource
    private GoodsDao goodsDao;
    @Resource
    private UserLookDao userLookDao;
    /**分页查询&&搜索*/
    @Transactional
    @Override
    public R list(GoodBo bo){
        if (bo!=null){
            PageHelper.startPage(bo.getPage(),bo.getSize());
            List<GoodsDto> list = goodsDao.list(bo.getType(), bo.getName());
            PageInfo<GoodsDto> goodsDtoPageInfo = new PageInfo<>(list);
            return R.ok(goodsDtoPageInfo.getList());
        }
        return R.fail("参数有误!");
    }

    @Override
    @Transactional
    public R queryDetail(int tid, int uid, int gid) {
        //入参检测
        if (uid>0 && tid> 0 && gid>0 ){
            List<GoodsDto> goodsDtos = goodsDao.queryDetail(tid, gid);
            if (goodsDtos!=null){
                userLookDao.insert(new UserLook(uid,gid));
            }
            return R.ok(goodsDtos);
        }
        return R.fail("用户未登录");
    }

    @Override
    public R save(Goods goods) {
        if (goods!=null){
            goods.setCtime(new Date());
            if (goodsDao.insert(goods)==1){
                return R.ok();
            }else {
                return R.fail("插入失败");
            }
        }else{
            return R.fail("参数有误");
        }
    }

    @Override
    public R updateFlag(int gid, int flag) {
        if (gid>0){
            int i = goodsDao.updateFlag(gid,flag);
            if (i==1){
                return R.ok();

            }
        }
        return R.fail("修改失败!");
    }


}
